﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using System.Data.Linq;
using System.Linq;
using QuanLyThuVien.BUS;
using QuanLyThuVien.DTO;
using System.Runtime.InteropServices;


namespace QuanLyThuVien
{
    public partial class frmQuanly : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public frmQuanly()
        {
            InitializeComponent();
        }

        // ham nhan data tu form Dang Nhap
       int madn;
       frmDangnhap frmDNhap = new frmDangnhap();
       public void funData(TextBox txtForm1, frmDangnhap frmDN)
       {
           madn = int.Parse(txtForm1.Text);
           frmDNhap = frmDN;
       }

      
        int manv;
        private void frmQuanly_Load(object sender, EventArgs e)
        {
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

            DataTable dt = new DataTable();
            dt = NhanVienBUS.DS_NhanVien();
            dgdanhsachnhanvien.DataSource = dt;
            cbbbangcap.DataSource = LoaiBangCapBUS.DS_LoaiBangCap();
            cbbbangcap.ValueMember = "MaLoaiBangCap";
            cbbbangcap.DisplayMember = "TenLoaiBangCap";
            cbbbophan.DataSource = LoaiBoPhanBUS.DS_LoaiBoPhan();
            cbbbophan.DisplayMember = "TenLoaiBoPhan";
            cbbbophan.ValueMember = "MaLoaiBoPhan";
            cbbchucvu.DataSource = LoaiChucVuBUS.DS_LoaiChucVu();
            cbbchucvu.DisplayMember = "TenLoaiChucVu";
            cbbchucvu.ValueMember = "MaLoaiChucVu";

       
            //load nhan vien dau tien len cac textbox
            //int maNV1 = int.Parse(dt.Rows[0]["Mã Nhân Viên"].ToString());
            //NhanVien nv = NhanVienBUS.ThongTin_NhanVien(maNV1);

            //tbhoten.Text = nv.HoTenNhanVien;
            //tbdienthoai.Text = nv.DienThoai.ToString();
            //tbdiachi.Text = nv.DiaChi;
            //dtngaysinh.Value = nv.NgaySinh.Value;

            //cbbbangcap.SelectedValue = nv.MaLoaiBangCap;
            //cbbchucvu.SelectedValue = nv.MaLoaiChucVu;
            //cbbbophan.SelectedValue = nv.MaLoaiBoPhan;

            dgdanhsachnhanvien.Rows[0].Selected = false;

            // lay thong tin cua nguoi dang nhap
            NhanVien nguoiDN = NhanVienBUS.ThongTin_NhanVien(madn);
            txtTenNguoiQL.Text = nguoiDN.HoTenNhanVien;


            //bao cao tinh hinh muon sach theo the loai
          
          
            DataTable temp = new DataTable();
            temp = PhieuMuonBUS.DemTheLoai();
            DataTable kq1 = new DataTable();
            kq1.Columns.Add("Tên Thể Loại", typeof(string));
            kq1.Columns.Add("Số lượt mượn", typeof(int));
            kq1.Columns.Add("Tỉ Lệ", typeof(float));
            int tongMuon =0;
            for (int i = 0; i < temp.Rows.Count; i++)
            {
                tongMuon = tongMuon + int.Parse(temp.Rows[i]["CountTheLoai"].ToString());
                

            }
            for (int i = 0; i < temp.Rows.Count; i++)
            {
                float tiLe = (float.Parse(temp.Rows[i]["CountTheLoai"].ToString()))/ tongMuon;
                kq1.Rows.Add(temp.Rows[i]["TenTheLoai"], temp.Rows[i]["CountTheLoai"], tiLe);

            }

            dgvMuonSachTheoTL.DataSource = kq1;
            lblTong.Text = tongMuon.ToString();

        }

        //them nhan vien moi
        private void btnthem_Click(object sender, EventArgs e)
        {
            //kiem tra du lieu dau vao
            if ((tbhoten.Text == "") || (tbdiachi.Text == "") || (tbdienthoai.Text == ""))
            {
                MessageBox.Show("Chưa nhập đủ thông tin cần thiết . Vui lòng kiểm tra lại.");
                return;
            }

            NhanVienDTO nv = new NhanVienDTO();
            nv.HoTenNhanVien = tbhoten.Text;
            nv.NgaySinh = dtngaysinh.Value.Date;
            nv.DiaChi = tbdiachi.Text;
            nv.DienThoai = decimal.Parse(tbdienthoai.Text);
            nv.MaLoaiBangCap = int.Parse(cbbbangcap.SelectedValue.ToString());
            nv.MaLoaiBoPhan = int.Parse(cbbbophan.SelectedValue.ToString());
            nv.MaLoaiChucVu = int.Parse(cbbchucvu.SelectedValue.ToString());
            nv.MaNguoiLap = madn;
            nv.TinhTrangXoa = 0;

            NhanVienBUS.Them_NhanVien(nv);
                       
            DataTable dt = new DataTable();
            dt = NhanVienBUS.DS_NhanVien();
            dgdanhsachnhanvien.DataSource = dt;

            MessageBox.Show("Thêm Thành Công.");
            
            
        }

        //xoa 1 nhan vien
        private void btnxoa_Click(object sender, EventArgs e)
        {
            NhanVienDTO nv = new NhanVienDTO();
            nv.MaNhanVien = manv;
            NhanVienBUS.Xoa_NhanVien(nv);

            DataTable dt = new DataTable();
            dt = NhanVienBUS.DS_NhanVien();
            dgdanhsachnhanvien.DataSource = dt;

            MessageBox.Show("Xóa Thành Công.", "THÔNG BÁO!!!");
        }

        // khi click vao bat ky cell nao tren datagridview danh sach nhan vien 
        // ta se co thong tin cua nhan vien do the hien tren cac textbox va cbbox
        private void dgdanhsachnhanvien_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int row = e.RowIndex;
            if (row < 0 || row == dgdanhsachnhanvien.Rows.Count -1 )
            {
                return;
            }
            manv = int.Parse(dgdanhsachnhanvien.Rows[row].Cells["Mã Nhân Viên"].Value.ToString());

            NhanVien nv = NhanVienBUS.ThongTin_NhanVien(manv);
            tbhoten.Text = nv.HoTenNhanVien;
            tbdienthoai.Text = nv.DienThoai.ToString();
            tbdiachi.Text = nv.DiaChi;
            dtngaysinh.Value = nv.NgaySinh.Value;
            cbbbangcap.SelectedValue = nv.MaLoaiBangCap;
            cbbchucvu.SelectedValue = nv.MaLoaiChucVu;
            cbbbophan.SelectedValue = nv.MaLoaiBoPhan;
       
        }

       

        //sua 1 nhan vien
        private void btnSua_Click(object sender, EventArgs e)
        {
            NhanVienDTO nv = new NhanVienDTO();
            nv.MaNhanVien = manv;
            nv.HoTenNhanVien = tbhoten.Text;
            nv.NgaySinh = dtngaysinh.Value.Date;
            nv.DiaChi = tbdiachi.Text;
            nv.DienThoai = decimal.Parse(tbdienthoai.Text);
            nv.MaLoaiBangCap = int.Parse(cbbbangcap.SelectedValue.ToString());
            nv.MaLoaiBoPhan = int.Parse(cbbbophan.SelectedValue.ToString());
            nv.MaLoaiChucVu = int.Parse(cbbchucvu.SelectedValue.ToString());

            NhanVienBUS.CapNhat_NhanVien(nv);

            DataTable dt = new DataTable();
            dt = NhanVienBUS.DS_NhanVien();
            dgdanhsachnhanvien.DataSource = dt;

            MessageBox.Show("Cập Nhật Thành Công.");
        }

        //khi combobox thang thay doi  thi datagirdview ben duoi se the hien 
        //tinh hinh muon sach cua thang do 
        private void cbbthang_SelectedValueChanged(object sender, EventArgs e)
        {
            string thang = cbbthang.Text;
          
            int month = int.Parse(thang);
            DataTable temp = new DataTable();
            temp = PhieuMuonBUS.DemTheLoaiTheoThang(month);
            DataTable kq1 = new DataTable();
            kq1.Columns.Add("Tên Thể Loại", typeof(string));
            kq1.Columns.Add("Số lượt mượn", typeof(int));
            kq1.Columns.Add("Tỉ Lệ", typeof(float));
            int tongMuon = 0;
            for (int i = 0; i < temp.Rows.Count; i++)
            {
                tongMuon = tongMuon + int.Parse(temp.Rows[i]["CountTheLoai"].ToString());


            }
            for (int i = 0; i < temp.Rows.Count; i++)
            {
                float tiLe = (float.Parse(temp.Rows[i]["CountTheLoai"].ToString())) / tongMuon;
                kq1.Rows.Add(temp.Rows[i]["TenTheLoai"], temp.Rows[i]["CountTheLoai"], tiLe);

            }

            dgvMuonSachTheoTL.DataSource = kq1;
            lblTong.Text = tongMuon.ToString();
        }

        //bat su kien khi ta chon ngay tren datetimepicker Ngay Tra
        private void dtNgayTra_ValueChanged(object sender, EventArgs e)
        {
            DateTime ngay = dtNgayTra.Value.Date;
            dgvSachTraTre.Visible = true;
            DataTable dt = new DataTable();
            if (dt.Rows.Count > 0)
            {
                dgvSachTraTre.DataSource = PhieuTraBUS.SachDaTra(ngay);
            }
            else
            {
                MessageBox.Show("Không có sách trả trễ trong ngày.");
                dgvSachTraTre.DataSource = null;
                dgvSachTraTre.Refresh();
            }
          

        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            tbhoten.Text = "";
            tbdiachi.Text = "";
            tbdienthoai.Text = "";

        }

        private void dtTK_NoTienPhat_ValueChanged(object sender, EventArgs e)
        {
            dgvTienNo.Visible = true;
            DateTime ngay = dtTK_NoTienPhat.Value.Date;
            DataTable dt = PhieuThuTienPhatBUS.TienNo_DG(ngay);
            float tong= 0;
            if (dt.Rows.Count > 0)
            {
                dgvTienNo.DataSource = PhieuThuTienPhatBUS.TienNo_DG(ngay);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    tong = tong + float.Parse(dt.Rows[i]["Tiền Nợ"].ToString());
                }
                lblTongNo.Visible = true;
                lblTongNo.Text = tong.ToString();
            }
            else
            {
                MessageBox.Show("Không có độc giả nào nợ tiền phạt trong ngày.");
                dgvTienNo.DataSource = null;
                dgvTienNo.Refresh();
            }
            
        }

        private void btnthoat_Click(object sender, EventArgs e)
        {
            this.Close();
            frmDNhap.Close();
        }

        private void lblTimSach_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmTimKiemSach frm = new frmTimKiemSach();
            frm.ShowDialog();
        }

        private void lblHuongdan_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //System.Diagnostics.Process.Start("Huongdan.chm");
            Help.ShowHelp(this, "Huongdan.chm");
        }

      
    }
}